package controllers; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Iterator; import javax.swing.JOptionPane; import javax.swing.table.DefaultTableModel; import models.Customer; import models.OPDept; import models.Order; import models.Product; import models.Warehouse; import views.LoginFrame; import views.MessageDialogs; import views.UserFrame; public class UserFrameController { private static UserFrame frame = new UserFrame(); private Warehouse stock = new Warehouse(); private Product p; private Iterator<Product> itProduct; private OPDept order = new OPDept(); private SerializableManager manager = new SerializableManager(); public UserFrameController() { frame.setAddOrderButtonActionListener(new AddOrderButtonActionListener()); frame.setSearchButtonActionListener(new SearchProductButtonActionListener()); this.stock = manager.deserializeWharehouse(); this.order = manager.deserializeOrders(); } public Warehouse getStock() { return stock; } public void setStock(Warehouse stock) { this.stock = stock; } public class AddOrderButtonActionListener implements ActionListener { @Override public void actionPerformed(final ActionEvent e) { String order1[] = MessageDialogs.addOrderWindow(); int row1 = MessageDialogs.getRowByValue(UserFrame.getTable().getModel(), order1[1]); Integer quant=(Integer) UserFrame.getTable().getModel().getValueAt(row1, 2); if(order1[2].equals("0")){ JOptionPane.showMessageDialog(null, "You have no product selected!", "Error", JOptionPane.WARNING_MESSAGE); } else if(Integer.parseInt(order1[2])>quant){ JOptionPane.showMessageDialog(null, "Not enough products on the stock!", "Error", JOptionPane.WARNING_MESSAGE); }else{ Customer cust = new Customer(order1[0]); Product p = new Product(Integer.parseInt(order1[3]), order1[1], Integer.parseInt(order1[2])); Order ord = new Order(order.getSize(), p, cust, Integer.parseInt(order1[2])); UserFrame.getTable().getModel().setValueAt(new Integer(quant - Integer.parseInt(order1[2])), row1, 2); order.addOrder(ord); Object[] row = { order.getSize(), LoginFrame.getUserName(), order1[1], order1[2], "Processing..." }; ((DefaultTableModel) UserFrame.getOrderTable().getModel()).addRow(row); itProduct = stock.getProductsInAscendingOrder(); while (itProduct.hasNext()) { Product product = itProduct.next(); if (product.getID() == p.getID()) { product.setQuantity(quant - Integer.parseInt(order1[2])); } } new java.util.Timer().schedule(new java.util.TimerTask() { @Override public void run() { ((DefaultTableModel) UserFrame.getOrderTable().getModel()).setValueAt(new String("Computed"), order.getSize()-2, 4); } }, 5000); manager.serializaOrders(order); manager.serializaWarehouse(stock); } } } public class SearchProductButtonActionListener implements ActionListener { @Override public void actionPerformed(final ActionEvent e) { itProduct = stock.getProductsInAscendingOrder(); String s = ""; String name = JOptionPane.showInputDialog("Give the name of the object to be searched:"); boolean este = false; try { while (itProduct.hasNext()) { p = itProduct.next(); if (p.getName().equals(name)) { s = s + "ID:" + p.getID() + " Name:" + p.getName() + " Quantity:" + p.getQuantity() + "\n"; este = true; } } if (este == false) { JOptionPane.showMessageDialog(null, "There is no product called " + name + "!", "Error!", JOptionPane.WARNING_MESSAGE); } else { JOptionPane.showMessageDialog(null, s, "Product Found", JOptionPane.DEFAULT_OPTION); } } catch (Exception a) { JOptionPane.showMessageDialog(null, "Introduce the name of the product:", "Error!", JOptionPane.WARNING_MESSAGE); } } } }